package com.meizi.sys.enums;

import lombok.Getter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Administration
 * @date 2021/8/9 - 11:48 - 星期一
 * @project lambda
 * @package com.meizi.sys.enums
 * @by GGbomd猪猪侠
 */
public enum StatusEnums {
    /**
     * 状态  0：停用   1：正常
     */
    DEACTIVATE(0, "停用"),

    NORMAL(1, "正常");

    @Getter
    private Integer value;
    @Getter
    private String desc;

    StatusEnums(Integer value, String desc) {
        this.value = value;
        this.desc = desc;
    }

    /**
     * 根据 value 找 对应的枚举
     *
     * @param v Integer
     * @return RepresentativeInfoApproveStatusEnum
     */
    public StatusEnums from(Integer v) {
        for (StatusEnums tt : StatusEnums.values()){
            if (tt.getValue().equals(v)){
                return tt;
            }
        }
        throw new IllegalArgumentException("unknown trade type: " + v);
    }

    /**
     * 查找 value 是否存在
     *
     * @param value Integer 参数
     * @return boolean
     */
    public boolean containsValue(Integer value) {
        StatusEnums[] values = StatusEnums.values();
        for (StatusEnums e : values) {
            if (e.getValue().equals(value)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 查找 value 是否存在
     *
     * @param value Integer 参数
     * @return boolean
     */
    public boolean validation(Integer value) {
        boolean b = containsValue(value);
        return b;
    }

    /**
     * 查找 desc 是否存在
     *
     * @param desc String 参数
     * @return boolean
     */
    public boolean containsDesc(String desc) {
        StatusEnums[] values = StatusEnums.values();
        for (StatusEnums e : values) {
            if (e.getDesc().equals(desc)) {
                return true;
            }
        }
        return false;
    }

    /**
     * To Dict
     * @return List<Map<String, Object>>
     */
    public List<Map<String, Object>> toDict() {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        for (StatusEnums t : StatusEnums.values()) {
            Map<String, Object> tempMap = new HashMap<String, Object>();
            tempMap.put("value", t.getValue());
            tempMap.put("desc", t.getDesc());
            list.add(tempMap);
        }
        return list;
    }
}
